import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class potencia {

	public static int pot (int valor, int n){
		int res = 0;		
		switch (n){
			case 0 : { res = 1; break;}
			case 1 : { res = valor; break;}
			default: { res = valor * pot (valor,n-1); break;}
		}
		return res;
	}

	public static boolean esPar(int x) {
		return (x % 2 == 0); // x mod 2 == 0
	}

	public static int readInt(String cartel) {
		String s = null;
		System.out.print(cartel);
		try{
			BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
			s = in.readLine();
		} catch(IOException e){
			System.out.println("Error al leer");
			e.printStackTrace();
		}
		System.out.println();
		return Integer.parseInt(s);
	}
	
	public static void main(String args[]) {
		int n = -1;		
		while (n < 0)
			n = readInt("Ingrese el numero que quiere elevar: ");
		int a = -1;		
		while (a < 0)
			a = readInt("Ingrese la potencia a la que lo quiere elevar: ");		
		int mitad = 0; 
		int res = 0; // los inicializo para que no me de error al compilar	
		if (esPar(n)) {
			mitad = pot(n,a/2);
			res = pot(mitad,2);
		}
		else { // el numero es impar
			mitad = pot(n,(a-1)/2); // le resto uno a la potencia para que la mitad me de exacta
			res = n*pot(mitad,2); // ahora corrijo el resultado multimplicando por el n que me falta, el que reste arriba
		}
		System.out.println("El numero " + n + " elevado a la potencia numero " + a + " es igual a: " + res);	
	}
}
